<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Atractivo_lst( $this );

	class Atractivo_lst extends Lst
	{
	function Atractivo_lst( &$oModule )
		{
			$this->Lst( $oModule );
			// Crea el Objeto Domicilio
				$oModAdministracion =& loadModule( 'administracion' );
				$oModAdministracion->setSubModule( 'entidades' );
				$this->oDomicilio = $oModAdministracion->loadClass( 'Domicilio_frm' );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Nombre', 'Cant','ncIngrediente' );
					break;
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Nombre', 'Cant','ncIngrediente' );
					break;
			}
		}
	function initialize( )
		{
			$this->oFiltro = $this->oModule->loadClass( 'Atractivo_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->setTitle ( "Atractivo" );
			$this->setSummary( "Esta tabla contiene los Atractivos" );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_ATRACTIVO, 'ncAtractivo', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ATRACTIVO, 'ncAtractivo', 'gtAtractivoRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM gtRotuloAtractivo' ) );
			$this->addColumnMultilanguage  ('Nombre','cdAtractivo');
			$this->setColumnAction( 'Nombre', VER_ATRACTIVO, 'ncAtractivo' );
			$this->addColumn ('Cant','', '');
			$this->addColumn ( 'Codigo', 'ncAtractivo' );
			$this->addColumnAction( 'Establecimiento', VER_ESTABLECIMIENTO, 'ncEstablecimiento', 'cdEstablecimiento' );
			$this->addColumn ('Tipo','cdTipoAtractivo ');
			$this->addColumnBool ('Imperdible','bImperdible');
			$this->addColumn ('Descripcion','cDescripcion');
			$this->addColumnLink ('Web','cPaginaWeb');
			$this->addColumn('Email','cEmail');
			$this->addColumn('Domicilio','');
			$this->addColumn('Ubicacion','');
			$this->addColumn('Telefono','');
			$this->addColumnTag( 'ncIngrediente', ACTUALIZAR_INGREDIENTE_ATRACTIVO, 'ncAtractivo', 'gtAtractivoIngrediente', $this->oDatabase->getKeyArray('SELECT ncIngrediente, cdIngrediente FROM gcIngrediente' ) );
		}
	function makeColumn ( $aRow, $cField )
	{
		switch( $cField )
		{
			case 'DescriptionLookUp':
				$cReturn = str_replace( "'", " ", extractLanguage( $aRow['cdAtractivo'], 'es')  );
				$cReturn = str_replace( "\"", " ", $cReturn );
				break;
			case 'Cant':
					$cReturn =  $this->oDatabase->getData("SELECT count(*) FROM gtRecorridoAtractivo WHERE ncAtractivo = " . $aRow['ncAtractivo']) ;
					break;
			case 'KeyLookUp':
				$cReturn = $aRow['ncAtractivo'];
				break;
			case 'Domicilio':
				$this->oDomicilio->setValue( $aRow["ncDomicilio"] );
				$cReturn = $this->oDomicilio->getDescription();
				break;
			case 'Ubicacion':
				$cReturn = $this->oDomicilio->getUbicacion();
			break;
			case 'Telefono':
				$cReturn = $this->oDomicilio->aFields['cTelefono']->getValue();
				break;
				default:
					return false;
				break;
		}
		return $cReturn;
	}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Atr.bEstrella, Atr.ncAtractivo, cdTipoAtractivo , cdAtractivo, Atr.ncEstablecimiento, Est.cdEstablecimiento
							FROM gtAtractivo as Atr
							LEFT JOIN gcTipoAtractivo as TAt
								ON TAt.ncTipoAtractivo  = Atr.ncTipoAtractivo
							LEFT JOIN gtEstablecimiento as Est
								ON Est.ncEstablecimiento  = Atr.ncEstablecimiento ";
				//$cSql .= armarJoin ( " JOIN gtAtractivoValoracion as AVa ON AVa.ncAtractivo = Atr.ncAtractivo AND ncValoracion = $ncValoracion", $ncValoracion);
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "cdAtractivo" );
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('Atr') );
				$this->oWhere->replace( 'Atr.ncValoracion', 'AVa.ncValoracion', '', 'gtAtractivoValoracion as AVa', 'AVa.ncAtractivo = Atr.ncAtractivo'); 
				if ( $this->aFields[ncCategoriaRecorrido] ) $this->oWhere->addExpression ( "ncAtractivo" , " ncAtractivo in (select ncAtractivo from gtRecorridoAtractivo as a join gtRecorrido as b on a.ncRecorrido = b.ncRecorrido where  ncCategoriaRecorrido in  (" .$this->aFields[ncCategoriaRecorrido] .") )" );
			// $this->oWhere->addExpression ( "ncAtractivo", " ncAtractivo not in (select ncAtractivo from gtRecorridoAtractivo) ", true);
				$this->oWhere->addKey ( $this->oDatabase->dbConcat( "' '", " replace(cdAtractivo, '<es>', '' ) " ), getParam( PARAM_KEYLOOKUP ) ); //
				$cSql . $this->oWhere->make();				
				return $cSql . $this->oWhere->make();				
		}
	function makeListActions()
		{
			$this->addListAction ( AGREGAR_ATRACTIVO, $cParametroRegistro, 'I' , VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncAtractivo=" . $aRow["ncAtractivo"];
			$this->addRowAction ( MODIFICAR_ATRACTIVO, $cParametroRegistro, '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_ATRACTIVO, $cParametroRegistro );
		}
	function makeComplex()
		{
			$oLst = $this->oModule->loadClass ( "Recorrido_atractivo_lst" );
			$oLst->aFields['ncAtractivo'] = $this->aFields['ncAtractivo'];
			$oLst->setTitle("Recorridos");
			$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->makeDir();
			}
		}
	}
?>